package com.an.trip.service;

import com.an.common.core.domain.PageQuery;
import com.an.common.core.page.TableDataInfo;
import com.an.trip.domain.bo.TripDailyRecordBo;
import com.an.trip.domain.vo.TripDailyRecordVo;

import java.util.Collection;
import java.util.List;

/**
 * 行程每日记录Service接口
 *
 * @author Ann
 * @date 2024-12-04
 */
public interface ITripDailyRecordService {

    /**
     * 查询行程每日记录
     */
    TripDailyRecordVo queryById(Long tripId);

    /**
     * 查询行程每日记录列表
     */
    TableDataInfo<TripDailyRecordVo> queryPageList(TripDailyRecordBo bo, PageQuery pageQuery);

    /**
     * 查询行程每日记录列表
     */
    List<TripDailyRecordVo> queryList(TripDailyRecordBo bo);

    /**
     * 新增行程每日记录
     */
    Boolean insertByBo(TripDailyRecordBo bo);

    /**
     * 修改行程每日记录
     */
    Boolean updateByBo(TripDailyRecordBo bo);

    /**
     * 校验并批量删除行程每日记录信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);


    /**
     * 按 ID 结算
     *
     * @param list 列表
     * @return {@link Boolean }
     * @author ANH
     * @date 2024/12/07
     */
    Boolean settleByIds(List<Long> list);


    /**
     * 委托
     *
     * @param recordBo 记录 bo
     * @return {@link Boolean }
     * @author ANH
     * @date 2025/01/03
     */
    Boolean delegate(TripDailyRecordBo recordBo);


    /**
     * 查询原始信息
     *
     * @param tripId 行程 ID
     * @return {@link TripDailyRecordVo }
     * @author ANH
     * @date 2025/01/03
     */
    TripDailyRecordVo queryOriginalInfo(Long tripId);

    /**
     * 查询受托人信息
     *
     * @param tripId 行程 ID
     * @return {@link TripDailyRecordVo }
     * @author ANH
     * @date 2025/01/03
     */
    TripDailyRecordVo queryDelegateInfo(Long tripId);
}
